/* * Copyright (c) 2012-2015, Luigi R. Viggiano * All rights reserved. * * This software is distributable under the BSD license. * See the terms of the BSD license in the documentation provided with this software. */ package org.aeonbits.owner.examples; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; /** * This spike is a learning test to understand how the asynchronous reload can be implemented. * @author Luigi R. Viggiano */ public class ScheduledExecutorServiceSpike { public static void main(String[] args) throws InterruptedException { ThreadFactory tf = new ThreadFactory() { public Thread newThread(Runnable r) { try { Thread result = new Thread(r); result.setDaemon(true); return result; } finally { System.out.println("new thread created"); } } }; ScheduledExecutorService stp = Executors.newSingleThreadScheduledExecutor(tf); stp.scheduleAtFixedRate(new Runnable() { int count = 0; public void run() { if ( count++ % 2 == 0) System.out.printf("*"); } }, 500, 500, TimeUnit.MILLISECONDS); stp.scheduleAtFixedRate(new Runnable() { int count = 0; public void run() { ++count; if (count != 5 && count != 10) System.out.printf("."); if (count == 10) count = 0; } }, 100, 100, TimeUnit.MILLISECONDS); stp.scheduleAtFixedRate(new Runnable() { int count = 0; public void run() { System.out.print(++count); } }, 1000, 1000, TimeUnit.MILLISECONDS); Thread.sleep(10000L); } }